package auto

import(
	"plugin"
	"context"
	"runtime"
	"fmt"

	// "goauto/model"
)


var pPlugin *plugin.Plugin
var soPath string = "/src/goauto/.so/auto/pkg.so"

func init() {
	initPlugin()
}

func initPlugin() {
	if pPlugin == nil {
		goroot := runtime.GOROOT()
		soPath := goroot + soPath
		fmt.Println("soPath", soPath)
		pPluginTmp, errTmp := plugin.Open(soPath)
		if errTmp != nil {
			panic(errTmp)
		}
		pPlugin = pPluginTmp
	}
	
	return
}
//运行
func Run(ctx context.Context) {
	
	Run2, err := pPlugin.Lookup("Run")
	if err != nil {
		panic(err)
	}
	Run2.(func(context.Context))(ctx)
}
//设置调用方法
func SetCtlFunc(cFunc func(context.Context)(map[string]any)) {
	
	SetCtlFunc2, err := pPlugin.Lookup("SetCtlFunc")
	if err != nil {
		panic(err)
	}
	SetCtlFunc2.(func(func(context.Context)(map[string]any)))(cFunc)
}
